Ansible Templates
Les templates se déploient exactement comme des fichier et utilisent le répertoire templates au lieu du répertoire files, en plus de copier le fichier ils interprètent les fichier en utilisant le moteur de template jinja2 : on peut alors y inclure des variables voire boucler dans des listes / dictionnaires.
Challenge Ansible Templates
Challenge :
Déployer dans l'un de vos containers un fichier readme.txt
dynamique qui contient les informations suivantes :
- L'adresse IPv4 du container
- Le nom de la distribution
- L'architecture
- La capacité en mémoire vive du container
- La version de Python
- La version d'Ansible
Solution :
-
Création du Template :
-
Nous avons créé un répertoire
templates
dans le rôle MySQL en exécutant la commande suivante :mkdir ../roles/mysql/templates
-
En utilisant le command suivant, ona a trouvé les variables sur "mysql"
ansible -m setup mysql -u root
-
Création du fichier
README.txt.j2
dans ce répertoire :Your Adresse IP: {{ ansible_default_ipv4.address }}
Your Distribution: {{ ansible_distribution }}
Your Architecture: {{ ansible_architecture }}
Your RAM: {{ ansible_memory_mb.real.total }} MB
Your Python: {{ ansible_python_version }}
Your Ansible: {{ ansible_version.full }}
-
-
Utilisation du Template dans la Tâche Ansible :
- Ajout de la tâche suivante dans le fichier
ansible/playbooks/roles/mysql/tasks/main.yml
pour déployer le template :- name: Déployer le template
ansible.builtin.template:
src: README.txt.j2
dest: /root/README.txt
- Ajout de la tâche suivante dans le fichier
-
Exécution du Playbook :
- Exécution du playbook avec la commande suivante :
ansible-playbook playbooks/mysql.yml
- Exécution du playbook avec la commande suivante :
-
Vérification dans le Container :
- Accéder au container et vérifier que le fichier
root/README.txt
a été créé :Your Adresse IP: 10.239.37.201
Your Distribution: Ubuntu
Your Architecture: x86_64
Your RAM: 3859 MB
Your Python: 3.10.12
Your Ansible: 2.15.0
- Accéder au container et vérifier que le fichier
Ainsi, avec l'utilisation de templates, le fichier readme.txt
a été déployé de manière dynamique dans le container, prenant en compte les variables spécifiées lors de l'exécution du playbook.